﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using Protocolo.Utilidades;

namespace Cliente
{
    public partial class Client : Form
    {
        public Client()
        {
            //Inicio la escucha de respuesta de descubrimiento
            Controlador.Instancia.InciarEscucharDescubrimiento();

            InitializeComponent();
        }

        protected override  void OnClosing(CancelEventArgs e)
        {
            Controlador.Instancia.RequestStop();
            Controlador.Instancia.DetenerEscucharDescubrimiento();
            
        }

        private void btnSubir_Click(object sender, EventArgs e)
        {
            if (Path.GetFileName(txtArchivoSubir.Text).Length > 50)
                MessageBox.Show("Error: el largo maximo de nombre de archivo permitido es de 50 caracteres (incluyendo extension)", "Subir Archivo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            else
                Controlador.Instancia.EnviarArchivo(txtArchivoSubir.Text);
        }

        private void btnExaminar_Click(object sender, EventArgs e)
        {
            var openFileDialog = new OpenFileDialog();
            if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                txtArchivoSubir.Text = openFileDialog.FileName;
            }
        }

        private void btnDescargar_Click(object sender, EventArgs e)
        {
            string path = string.Format("{0}\\{1}", DatosCliente.Instancia.FileRepository, txtArchivoDescargar.Text);
            if(Archivos.ExisteArchivo(path))
            {
                if (MessageBox.Show("El archivo ya se encuentra en el repositorio, ¿desea descargarlo nuevamente?", "Descarga Archivo", MessageBoxButtons.YesNo) == DialogResult.Yes)
                    Archivos.EliminarArchivo(path);
                else
                    return;
            }
                
            Controlador.Instancia.DescargarArchivo(txtArchivoDescargar.Text);
        }
    }
}
